package com.pzr.soccer.domain;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Document
@Data
@Slf4j
public class Plan {
    List<Expression> pre_conditions = new ArrayList<>();
    List<Expression> result_conditions = new ArrayList<>();
    private String id;
    private String name;
    /**
     * 把消息推送到特定用户web，mobile，email
     */
    private String userId;
    private String userEmail;
    private String userMobile;

    /*符合预设条件的比赛数*/
    private long matchPreCondition;

    /*符合预设条件和结果的比赛数*/
    private long matchResult;

    private String description;

    /*符合预设条件和结果的比赛ids*/
    Set<String> correctMatchesId = new HashSet<>();
    /*符合预设条件的比赛ids*/
    Set<String> matchesId =new HashSet<>();


    private String condition_begin_str;
    private String condition_end_str;
    private String result_begin_str;
    private String result_end_str;

    public int getCondition_begin() {
        return convert2num(condition_begin_str);
    }

    public int getCondition_end() {
        return convert2num(condition_end_str);
    }

    public int getResult_begin() {
        return convert2num(result_begin_str);
    }
    public int getResult_end() {
        return convert2num(result_end_str);
    }

    /**
     * 把String类型的时间点转换成int型，下半场全部加100
     * 半场结束=60， 全场结束=100+60 ， 大于45-》加100 （区别上下半场）
     * @param min 字符串类型的比赛进行时间，可能包括“半场结束”之类的
     * @return 数值表示的比赛进行分钟数
     */
    private int convert2num(String min) {
        String min_=min.trim();
        if(min_.equals("半场结束")){
            return 60;
        }else if(min_.equals("全场结束")){
            return 100+100;
        }else {
            try {
                int min_fixed=Integer.parseInt(min_);
                min_fixed=min_fixed<=45?min_fixed:min_fixed+100;
                return min_fixed;
            }catch (Exception e){
                log.warn("无效的预设时间: "+min);
                return 0;
            }
        }
    }

}
